﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using GestionePolveriLib.BL.Metadata;
using System.ComponentModel.DataAnnotations;

namespace GestionePolveriLib.BL
{
    [Serializable]
    [MetadataType(typeof(ComposizioneColoreMetadata))]
    public class ComposizioneColore
    {
        [Browsable(false)]
        public int ID { get; set; }
        [Browsable(false)]
        public Colore Colore { get; set; }
        [Browsable(false)]
        public Polvere Polvere { get; set; }

        [Browsable(false)]
        public double? PrezzoUnitarioPolvere { get; set; }

        public string Applicazione { get; set; }
        [DisplayName("Codice Colore")]
        public string ColoreDesc { get { return this.Colore.CodiceColore; } }
        [DisplayName("Famiglia")]
        public string FamigliaDesc { get { return this.Colore.Famiglia.Descrizione; } }
        [DisplayName("Descrizione")]
        public string DescrizioneColoreDesc { get { return this.Colore.Descrizione; } }
        [DisplayName("Note")]
        public string NoteColoreDesc { get { return this.Colore.Note; } }

        [DisplayName("Codice Polvere")]
        public string PolvereDesc { get { return this.Polvere.CodicePolvere; } }
        [DisplayName("Note Polvere")]
        public string NotePolvereDesc { get { return this.Polvere.Note; } }

        [DisplayName("Fornitore")]
        public string FornitoreDesc { get; set; }

        [DisplayName("Ufficiale")]
        public bool Ufficiale { get; set; }
        [DisplayName("Superata")]
        public bool Superata { get; set; }

        [Browsable(false)]
        public string Descrizione { get; set; }  // Descrizione Formula...

        [Browsable(false)]
        public bool IsDiSerie { get { return this.Colore.PianoColore.IsDiSerie; } }
        [Browsable(false)]
        public string Fascia { get { return this.Colore.PianoColore.Fascia; } }
        [Browsable(false)]
        public string TempiConsegna { get { return this.Colore.PianoColore.TempiConsegna; } }
        [Browsable(false)]
        public string TipologiaScortaMinima { get { return this.Polvere.TipologiaSM.Codice; } }

        //
        public ComposizioneColore()
        {

        }
    }
}
